package com.itheima.edu.manager.service;

import com.itheima.edu.manager.dao.BaseStudentDao;
import com.itheima.edu.manager.domain.Student;
import com.itheima.edu.manager.factory.StudentDaoFactory;

//业务员类
public class StudentService {
    //发现问题: 当业务员要切换dao提供服务时,需要该Service里的代码!  -- service和dao关系过于紧密(耦合性太强)

    //指挥库管去添加学生对象
   //private StudentDao dao = new StudentDao();
    private BaseStudentDao dao = StudentDaoFactory.getStudentDao();

    //业务员类中的添加学生功能
    public boolean addStudent(Student stu) {
        //指挥库管去添加学生
        return dao.addStudent(stu);
    }

    //业务员类中的查看学生功能
    public Student[] findAllStudent() {
        //指挥库管去查询学生
        Student[] stus = dao.findAllStudent();
        //通过标记位思想,看看业务员返回的数组中有没有有效的学生信息
        //假设返回的数据中没有学生信息
        boolean flag = false;

        for (int i = 0; i < stus.length; i++) {
            if(stus[i] != null){
                flag = true;
            }
        }
        if(flag){
            //有数据就返回数组地址
            return stus;
        }else {
            //没数据就返回null
            return null;
        }
    }

    //业务员类中的删除学生功能
    public boolean deleteStudent(String deleteId) {
        //指挥库管去删除学生
        return dao.deleteStudent(deleteId);
    }

    //业务员类中的修改学生功能
    public void updateStudent(String updateId, Student newStu) {
        //指挥库管去修改学生
        dao.updateStudent(updateId,newStu);
    }

    //业务员类中的校验学号功能
    public boolean isExists(String updateId) {
        //方案二:指挥库管进行根据学号查找索引位置功能,根据库管返回的索引组织当前
        int index = dao.getIndex(updateId);
        return index != -1;
    }
}
